package cn.tedu.springmvc.response;

import lombok.*;

@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class JsonResult {
    /**响应状态码(业务状态码)*/
    private Integer code;
    /**状态码的含义(比如:用户名被占用...)*/
    private String msg;
    /**服务端返回给客户端的具体数据(可能是VO对象,也可能是List集合...)*/
    private Object data;

    /**构造方法1:适用于不需要返回具体数据的Controller方法*/
    public JsonResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    /**构造方法2:适用于不需要返回具体数据的Controller方法,使用自定义枚举类StatusCode*/
    public JsonResult(StatusCode statusCode){
        this.code = statusCode.getCode();
        this.msg = statusCode.getMsg();
    }

    /**构造方法3:适用于需要返回具体数据的Controller方法,使用自定义枚举类StatusCode*/
    public JsonResult(StatusCode statusCode, Object data){
        this.code = statusCode.getCode();
        this.msg = statusCode.getMsg();
        this.data = data;
    }

    /**
     静态方法 ok(Object data) , 用于快速创建 JsonResult 对象，表示操作业务成功时返回的响应数据
     */public static JsonResult ok(Object data){
        JsonResult resultVO = new JsonResult(StatusCode.SUCCESS, data);
        return resultVO;
    }

    public static JsonResult ok(){
        return ok(null);
    }

}
